#pragma once
class CVector
{

private:
	float			m_X;
	float			m_Y;
	float			m_Z;

public:
	static const CVector mS_Right;
	static const CVector mS_Up;
	static const CVector mS_Forward;

	float	GetX()			{ return m_X; };
	void	SetX(float _x)	{ m_X = _x; };
	float	GetY()			{ return m_Y; };
	void	SetY(float _y)	{ m_Y = _y; };
	float	GetZ()			{ return m_Z; };
	void	SetZ(float _z)	{ m_Z = _z; };
	float	Length();
	float	LengthSquare();
	CVector	operator+ (CVector);
	CVector	operator- (CVector);
	CVector	operator* (float);
	CVector	operator/ (float);
	CVector	operator*  (CVector);
	CVector	operator/  (CVector);
	CVector	operator+= (CVector);
	CVector	operator-= (CVector);
	CVector	operator*= (CVector);
	CVector	operator/= (CVector);
	static float	DotProduct(CVector, CVector);
	static CVector	CrossProduct(CVector, CVector);
	CVector	Normalize();
	void	Print();
	CVector Reflect();

	// Constructors & destructor
	CVector(void);
	CVector(float, float, float);
	CVector(const CVector&);
	~CVector(void);

};

